from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.shared import RGBColor
from docx.oxml.ns import qn

# todo 写入word
# 新建空白文档
doc1 = Document()

# # 新增文档标题
# doc1.add_heading('如何使用 Python 创建 Word',0)
# # 保存文件
# doc1.save('word1.docx')

# 段落和章节
# 新建空白文档
# doc1 = Document()
# # 新增文档标题
# doc1.add_heading('如何使用 Python 创建 Word',0)
# # 创建段落描述
# doc1.add_paragraph('我们平时使用 Word 用来做文章的处理，可能没想过它可以用 Python 生成，下面我们就介绍具体如何操作……')
# # 创建一级标题
# doc1.add_heading('安装 python-docx 库',1)
# # 创建段落描述
# doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库，具体需要以下两步操作：')
# # 创建二级标题
# doc1.add_heading('第一步：安装 Python',2)
# # 保存文件
# doc1.save('word2.docx')

# 字体和引用
# 新建空白文档
# doc1 = Document()
# # 新增文档标题
# doc1.add_heading('如何使用 Python 创建 Word',0)
# # 创建段落描述
# doc1.add_paragraph('我们平时使用 Word 用来做文章的处理，可能没想过它可以用 Python 生成，下面我们就介绍具体如何操作……')
# # 创建一级标题
# doc1.add_heading('安装 python-docx 库',1)
# # 创建段落描述
# doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库，具体需要以下两步操作：')
# # 创建二级标题
# doc1.add_heading('第一步：安装 Python',2)
# # 创建段落，添加文档内容
# paragraph = doc1.add_paragraph('这是第一步的安装描述！')
# # 段落中增加文字，并设置字体字号
# run = paragraph.add_run('(注意：这里设置了字号为20)')
# run.font.size = Pt(20)
# # 设置英文字体
# run = doc1.add_paragraph('这里设置英文字体：').add_run('This Font is Times New Roman ')
# run.font.name = 'Times New Roman'
# # 设置中文字体
# run = doc1.add_paragraph('这里设置中文字体：').add_run('当前字体为黑体')
# run.font.name='黑体'
# r = run._element
# r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
# # 设置斜体
# run = doc1.add_paragraph('这段设置：').add_run('文字的是斜体 ')
# run.italic = True
# # 设置粗体
# run = doc1.add_paragraph('这段再设置：').add_run('这里设置粗体').bold = True
# # 设置字体带下划线
# run = doc1.add_paragraph('这段为下划线：').add_run('这里设置带下划线').underline = True
# # 设置字体颜色
# run = doc1.add_paragraph('这段字体为红色：').add_run('这里设置字体为红色')
# run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)
# # 增加引用
# doc1.add_paragraph('这里是我们引用的一段话：人生苦短，我用Python。', style='Intense Quote')
# # 保存文件
# doc1.save('word3.docx')

# 项目列表
#  新建文档
# doc2 = Document()
# doc2.add_paragraph('哪个不是水果：')
# # 增加无序列表
# doc2.add_paragraph(
#     '苹果', style='List Bullet'
# )
# doc2.add_paragraph(
#     '香蕉', style='List Bullet'
# )
# doc2.add_paragraph(
#     '馄炖', style='List Bullet'
# )
#
# doc2.add_paragraph('2020年度计划：')
# # 增加有序列表
# doc2.add_paragraph(
#     '每周健身一天', style='List Number'
# )
# doc2.add_paragraph(
#     '学习50本书', style='List Number'
# )
# doc2.add_paragraph(
#     '减少加班时间', style='List Number'
# )
# # 保存文件
# doc2.save('word4.docx')

# 图片和表格
# 新建文档
# doc2 = Document()
# doc2.add_heading('图片',2)
# # 增加图像
# doc2.add_picture('python-install.png', width=Inches(5.5))
# doc2.add_heading('表格',2)
# # 增加表格，这是表格头
# table = doc2.add_table(rows=1, cols=3)
# hdr_cells = table.rows[0].cells
# hdr_cells[0].text = '编号'
# hdr_cells[1].text = '姓名'
# hdr_cells[2].text = '职业'
# # 这是表格数据
# records = (
#     (1, '张三', '电工'),
#     (2, '张五', '老板'),
#     (3, '马六', 'IT')
# )
# # 遍历数据并展示
# for id, name, work in records:
#     row_cells = table.add_row().cells
#     row_cells[0].text = str(id)
#     row_cells[1].text = name
#     row_cells[2].text = work
# # 手动增加分页
# doc2.add_page_break()
# # 保存文件
# doc2.save('word5.docx')

# todo 读取 Word 文件
# 打开文档1
# doc1 = Document('word5.docx')
# 读取每段内容
# pl = [ paragraph.text for paragraph in doc1.paragraphs]
# print('###### 输出word1文章内容')
# # 输出读取到的内容
# for i in pl:
#     print(i)

# 打开文档2 读取word表格内容
# doc2 = Document('word5.docx')
# print('\n###### 输出word2文章内容')
# pl2 = [ paragraph.text for paragraph in doc2.paragraphs]
# # 输出读取到的内容
# for j in pl2:
#     print(j)
# # 读取表格材料，并输出结果
# tables = [table for table in doc2.tables]
# for table in tables:
#     for row in table.rows:
#         for cell in row.cells:
#             print (cell.text,end='  ')
#         print()
#     print('\n')

# 参考：https://python-docx.readthedocs.io/en/latest/index.html